/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.camachosanchez.bean;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Zully
 */
@Entity
@Table(name = "pilotos")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Pilotos.findAll", query = "SELECT p FROM Pilotos p ORDER BY p.apellidos"),
    @NamedQuery(name = "Pilotos.findById", query = "SELECT p FROM Pilotos p WHERE p.id = :id"),
    @NamedQuery(name = "Pilotos.findByNombres", query = "SELECT p FROM Pilotos p WHERE p.nombres = :nombres"),
    @NamedQuery(name = "Pilotos.findByApellidos", query = "SELECT p FROM Pilotos p WHERE p.apellidos = :apellidos"),
    @NamedQuery(name = "Pilotos.findByFechaNacimiento", query = "SELECT p FROM Pilotos p WHERE p.fechaNacimiento = :fechaNacimiento"),
    @NamedQuery(name = "Pilotos.findByNacionalidad", query = "SELECT p FROM Pilotos p WHERE p.nacionalidad = :nacionalidad"),
    @NamedQuery(name = "Pilotos.findByPaisResidencia", query = "SELECT p FROM Pilotos p WHERE p.paisResidencia = :paisResidencia"),
    @NamedQuery(name = "Pilotos.findByProvinciaResidencia", query = "SELECT p FROM Pilotos p WHERE p.provinciaResidencia = :provinciaResidencia"),
    @NamedQuery(name = "Pilotos.findByLocalidadResidencia", query = "SELECT p FROM Pilotos p WHERE p.localidadResidencia = :localidadResidencia"),
    @NamedQuery(name = "Pilotos.findByTelefono", query = "SELECT p FROM Pilotos p WHERE p.telefono = :telefono"),
    @NamedQuery(name = "Pilotos.findByTipoLicencia", query = "SELECT p FROM Pilotos p WHERE p.tipoLicencia = :tipoLicencia"),
    @NamedQuery(name = "Pilotos.findByObservaciones", query = "SELECT p FROM Pilotos p WHERE p.observaciones = :observaciones"),
    @NamedQuery(name = "Pilotos.findByFechaInsercionActualizacion", query = "SELECT p FROM Pilotos p WHERE p.fechaInsercionActualizacion = :fechaInsercionActualizacion"),
    @NamedQuery(name = "Pilotos.findByEstado", query = "SELECT p FROM Pilotos p WHERE p.estado = :estado")})
public class Pilotos implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Basic(optional = false)
    @Column(name = "nombres")
    private String nombres;
    @Basic(optional = false)
    @Column(name = "apellidos")
    private String apellidos;
    @Basic(optional = false)
    @Column(name = "fecha_nacimiento")
    @Temporal(TemporalType.DATE)
    private Date fechaNacimiento;
    @Column(name = "nacionalidad")
    private String nacionalidad;
    @Column(name = "pais_residencia")
    private String paisResidencia;
    @Column(name = "provincia_residencia")
    private String provinciaResidencia;
    @Column(name = "localidad_residencia")
    private String localidadResidencia;
    @Column(name = "telefono")
    private String telefono;
    @Basic(optional = false)
    @Column(name = "tipo_licencia")
    private String tipoLicencia;
    @Column(name = "observaciones")
    private String observaciones;
    @Basic(optional = false)
    @Column(name = "fecha_insercion_actualizacion")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaInsercionActualizacion;
    @Basic(optional = false)
    @Column(name = "estado")
    private boolean estado;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idPilotos", fetch = FetchType.LAZY)
    private List<Egresos> egresosList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idPilotoSalida", fetch = FetchType.LAZY)
    private List<InspeccionEquipo> inspeccionEquipoList;
    @OneToMany(mappedBy = "idPilotoEntrada", fetch = FetchType.LAZY)
    private List<InspeccionEquipo> inspeccionEquipoList1;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idPilotos", fetch = FetchType.LAZY)
    private List<Alineaciones> alineacionesList;
    @JoinColumn(name = "id_usuario", referencedColumnName = "id")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Usuarios idUsuario;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idPiloto", fetch = FetchType.LAZY)
    private List<ControlCambioNeumatico> controlCambioNeumaticoList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idPilotos", fetch = FetchType.LAZY)
    private List<Despinches> despinchesList;

    public Pilotos() {
    }

    public Pilotos(Integer id) {
        this.id = id;
    }

    public Pilotos(Integer id, String nombres, String apellidos, Date fechaNacimiento, String tipoLicencia, Date fechaInsercionActualizacion, boolean estado) {
        this.id = id;
        this.nombres = nombres;
        this.apellidos = apellidos;
        this.fechaNacimiento = fechaNacimiento;
        this.tipoLicencia = tipoLicencia;
        this.fechaInsercionActualizacion = fechaInsercionActualizacion;
        this.estado = estado;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getNombres() {
        return nombres;
    }

    public void setNombres(String nombres) {
        this.nombres = nombres;
    }

    public String getApellidos() {
        return apellidos;
    }

    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }

    public Date getFechaNacimiento() {
        return fechaNacimiento;
    }

    public void setFechaNacimiento(Date fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }

    public String getNacionalidad() {
        return nacionalidad;
    }

    public void setNacionalidad(String nacionalidad) {
        this.nacionalidad = nacionalidad;
    }

    public String getPaisResidencia() {
        return paisResidencia;
    }

    public void setPaisResidencia(String paisResidencia) {
        this.paisResidencia = paisResidencia;
    }

    public String getProvinciaResidencia() {
        return provinciaResidencia;
    }

    public void setProvinciaResidencia(String provinciaResidencia) {
        this.provinciaResidencia = provinciaResidencia;
    }

    public String getLocalidadResidencia() {
        return localidadResidencia;
    }

    public void setLocalidadResidencia(String localidadResidencia) {
        this.localidadResidencia = localidadResidencia;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getTipoLicencia() {
        return tipoLicencia;
    }

    public void setTipoLicencia(String tipoLicencia) {
        this.tipoLicencia = tipoLicencia;
    }

    public String getObservaciones() {
        return observaciones;
    }

    public void setObservaciones(String observaciones) {
        this.observaciones = observaciones;
    }

    public Date getFechaInsercionActualizacion() {
        return fechaInsercionActualizacion;
    }

    public void setFechaInsercionActualizacion(Date fechaInsercionActualizacion) {
        this.fechaInsercionActualizacion = fechaInsercionActualizacion;
    }

    public boolean getEstado() {
        return estado;
    }

    public void setEstado(boolean estado) {
        this.estado = estado;
    }

    @XmlTransient
    public List<Egresos> getEgresosList() {
        return egresosList;
    }

    public void setEgresosList(List<Egresos> egresosList) {
        this.egresosList = egresosList;
    }
    
    @XmlTransient
    public List<InspeccionEquipo> getInspeccionEquipoList() {
        return inspeccionEquipoList;
    }

    public void setInspeccionEquipoList(List<InspeccionEquipo> inspeccionEquipoList) {
        this.inspeccionEquipoList = inspeccionEquipoList;
    }

    @XmlTransient
    public List<InspeccionEquipo> getInspeccionEquipoList1() {
        return inspeccionEquipoList1;
    }

    public void setInspeccionEquipoList1(List<InspeccionEquipo> inspeccionEquipoList1) {
        this.inspeccionEquipoList1 = inspeccionEquipoList1;
    }

    @XmlTransient
    public List<Alineaciones> getAlineacionesList() {
        return alineacionesList;
    }

    public void setAlineacionesList(List<Alineaciones> alineacionesList) {
        this.alineacionesList = alineacionesList;
    }

    public Usuarios getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(Usuarios idUsuario) {
        this.idUsuario = idUsuario;
    }

    @XmlTransient
    public List<ControlCambioNeumatico> getControlCambioNeumaticoList() {
        return controlCambioNeumaticoList;
    }

    public void setControlCambioNeumaticoList(List<ControlCambioNeumatico> controlCambioNeumaticoList) {
        this.controlCambioNeumaticoList = controlCambioNeumaticoList;
    }

    @XmlTransient
    public List<Despinches> getDespinchesList() {
        return despinchesList;
    }

    public void setDespinchesList(List<Despinches> despinchesList) {
        this.despinchesList = despinchesList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Pilotos)) {
            return false;
        }
        Pilotos other = (Pilotos) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return apellidos + " " + nombres;
    }
    
}
